Symbols are objects whose usefulness rests on the fact that two
symbols are identical (in the sense of <#484#>eqv?<#484#>) if and only if their
names are spelled the same way. This is exactly the property needed to
represent identifiers
The rules for writing a symbol are exactly the same as the rules for
writing an identifier; see sections~#syntaxsection#486>
It is guaranteed that any symbol that has been returned as part of a literal expression, or read using the <#488#>read<#488#> procedure, and subsequently written out using the <#489#>write<#489#> procedure, will read back in as the identical symbol (in the sense of <#490#>eqv?<#490#>). The <#1987#>string<#491#><#491#>symbol<#1987#> procedure, however, can create symbols for which this write/read invariance may not hold because their names contain special characters or letters in the non-standard case.